/*
  打 BOSS 3.0
  题目描述
    主角有一把毒刃，可以在 ti 秒开始持续 k 秒造成伤害，每秒伤害值为 1。
    给定怪物血量 h，问要打败 boss，最小的 k 为多少？
    注意: 每一时刻不允重叠伤害。
  输入格式
    第一行两个整数 n, h，分别代表攻击次数和 boss 的血量。
    第二行 n 个整数 t[i], 代表每次的攻击时间。
    其中，n <= 100，h <= 1e18，t[1] < t[2] < t[3] < ... < t[n] < 1e9。
  输出格式
    k 的最小值，可以打败 boss
  输入数据 1
    3 10
    2 4 10
  输出数据 1
    4
  样例数据解释：
    对于 k = 4，时间分别在 [2, 3, 4, 5, 6, 7, 10, 11, 12, 13] 造成伤害；
    每一秒，不允许叠加伤害。
*/

#include <bits/stdc++.h>

using namespace std;

/*
  思路:
    通常采用二分答案算法的话, 需要首先明确 2 个核心问题:
      1) 答案的取值范围(区间)，即确定区间的最大值和最小值
      2) 判断某个答案是否满足题意(条件)的判定方法
    解答本题时，先明确出这 2 个问题:
      1）答案的取值范围(区间)
          区间的最小值: 1;
          区间的最大值: "1 次攻击即伤害 boss 的全部血量" 对应的持续造成伤害的时间，即 h/1 = h;
      2) 判断某个答案是否满足题意的判定方法:
          假定每次攻击造成的持续伤害时间为 x，遍历每次攻击，计算这 n 次攻击是否能造成 h 点伤害；
           (注意: 计算伤害的时候，不能叠加伤害)
          如果造成的累计伤害大于等于 h，则该答案满足题目要求；
          否则，则该答案不满题目要求!
*/

long long n, h;
long long a[105] = {};  // a[i] 表示发起第 i 次攻击的时间点 (其中 i > 0)
long long s, e;         // s(start) 表示二分答案算法实现中进行二分查找时的开始边界(左边界)
                        // e(end)   表示二分答案算法实现中进行二分查找时的结束边界(右边界)

// 该函数用来判断输入 x(表示答案，即每次攻击造成持续伤害的时间) 是否满足条件(题目要求)
bool check(long long x) {
    long long num = 0;  // 造成的伤害的累加值

    for (int i = 1; i < n; i++) { // 统计 第 1 ~ 第 n - 1 次攻击造成的伤害之和
        num += min(x, a[i +  1] - a[i]); // 注意: 如果 2 次攻击造成的持续伤害时间重叠，重叠部分造成的伤害不能累加
    }
    num += x;  // 最后一次攻击造成的伤害点为 x

    return num >= h;
}

int main() {
    cin >> n >> h;
    for (int i = 1; i <= n; i++) {
        cin >> a[i]; // 从命令行输入发起每次攻击的时间点
    }

    /*
      用二分查找法，在答案的区间范围内，查找满足题目要求的最小值
      注意:
        特别技巧: 我们在编码时，要保证区间的最大值 e 一定大于等于 区间的最小值 s
                 这样就可以保证一定会进行一次循环处理!
    */
    long long ans = 0;
    s = 1; // 区间的最小值: 1;
    e = h; // 区间的最大值: "1 次攻击即伤害 boss 的全部血量" 对应的持续造成伤害的时间，即 h/1 = h;
    while (s <= e) {
        long long mid = (s + e) / 2;
        if (check(mid)) {
            ans = mid;
            e = mid - 1; // 由于需要答案尽可能地小，所以我们进一步从 mid 的左半区间进行查找
        } else {
            s = mid + 1; // mid 不满足题目要求，从 mid 的右半区间进行查找
        }
    }
    cout << ans;

    return 0;
}